aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/buffer.h b/src/buffer.h
index fa3fc6dafb8..b750e490078 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -107,6 +107,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
107#define BUF_BEG(buf) (BEG) 107#define BUF_BEG(buf) (BEG)
108#define BUF_BEG_BYTE(buf) (BEG_BYTE) 108#define BUF_BEG_BYTE(buf) (BEG_BYTE)
109 109
110/* !!!FIXME: all the BUF_BEGV/BUF_ZV/BUF_PT macros are flawed:
111 on indirect (or base) buffers, that value is only correct if that buffer
112 is the current_buffer, or if the buffer's text hasn't been modified (via
113 an indirect buffer) since it was last current. */
114
110/* Position of beginning of accessible range of buffer. */ 115/* Position of beginning of accessible range of buffer. */
111#define BUF_BEGV(buf) ((buf)->begv) 116#define BUF_BEGV(buf) ((buf)->begv)
112#define BUF_BEGV_BYTE(buf) ((buf)->begv_byte) 117#define BUF_BEGV_BYTE(buf) ((buf)->begv_byte)
@@ -313,7 +318,7 @@ while (0)
313 - (ptr - (current_buffer)->text->beg <= (unsigned) (GPT_BYTE - BEG_BYTE) ? 0 : GAP_SIZE) \ 318 - (ptr - (current_buffer)->text->beg <= (unsigned) (GPT_BYTE - BEG_BYTE) ? 0 : GAP_SIZE) \
314 + BEG_BYTE) 319 + BEG_BYTE)
315 320
316/* Return character at position POS. */ 321/* Return character at byte position POS. */
317 322
318#define FETCH_CHAR(pos) \ 323#define FETCH_CHAR(pos) \
319 (!NILP (current_buffer->enable_multibyte_characters) \ 324 (!NILP (current_buffer->enable_multibyte_characters) \
@@ -327,7 +332,7 @@ while (0)
327/* Variables used locally in FETCH_MULTIBYTE_CHAR. */ 332/* Variables used locally in FETCH_MULTIBYTE_CHAR. */
328extern unsigned char *_fetch_multibyte_char_p; 333extern unsigned char *_fetch_multibyte_char_p;
329 334
330/* Return character code of multi-byte form at position POS. If POS 335/* Return character code of multi-byte form at byte position POS. If POS
331 doesn't point the head of valid multi-byte form, only the byte at 336 doesn't point the head of valid multi-byte form, only the byte at
332 POS is returned. No range checking. */ 337 POS is returned. No range checking. */
333 338
@@ -336,7 +341,7 @@ extern unsigned char *_fetch_multibyte_char_p;
336 + (pos) + BEG_ADDR - BEG_BYTE), \ 341 + (pos) + BEG_ADDR - BEG_BYTE), \
337 STRING_CHAR (_fetch_multibyte_char_p)) 342 STRING_CHAR (_fetch_multibyte_char_p))
338 343
339/* Return character at position POS. If the current buffer is unibyte 344/* Return character at byte position POS. If the current buffer is unibyte
340 and the character is not ASCII, make the returning character 345 and the character is not ASCII, make the returning character
341 multibyte. */ 346 multibyte. */
342 347
@@ -447,7 +452,10 @@ struct buffer_text
447 /* The markers that refer to this buffer. 452 /* The markers that refer to this buffer.
448 This is actually a single marker --- 453 This is actually a single marker ---
449 successive elements in its marker `chain' 454 successive elements in its marker `chain'
450 are the other markers referring to this buffer. */ 455 are the other markers referring to this buffer.
456 This is a singly linked unordered list, which means that it's
457 very cheap to add a marker to the list and it's also very cheap
458 to move a marker within a buffer. */
451 struct Lisp_Marker *markers; 459 struct Lisp_Marker *markers;
452 460
453 /* Usually 0. Temporarily set to 1 in decode_coding_gap to 461 /* Usually 0. Temporarily set to 1 in decode_coding_gap to
@@ -843,6 +851,7 @@ extern struct buffer buffer_defaults;
843 be a Lisp-level local variable for the slot, it has no default value, 851 be a Lisp-level local variable for the slot, it has no default value,
844 and the corresponding slot in buffer_defaults is not used. */ 852 and the corresponding slot in buffer_defaults is not used. */
845 853
854
846extern struct buffer buffer_local_flags; 855extern struct buffer buffer_local_flags;
847 856
848/* For each buffer slot, this points to the Lisp symbol name 857/* For each buffer slot, this points to the Lisp symbol name
@@ -948,7 +957,7 @@ extern int last_per_buffer_idx;
948 from the start of a buffer structure. */ 957 from the start of a buffer structure. */
949 958
950#define PER_BUFFER_VAR_OFFSET(VAR) \ 959#define PER_BUFFER_VAR_OFFSET(VAR) \
951 ((char *) &buffer_local_flags.VAR - (char *) &buffer_local_flags) 960 ((char *) &((struct buffer *)0)->VAR - (char *) ((struct buffer *)0))
952 961
953/* Return the index of buffer-local variable VAR. Each per-buffer 962/* Return the index of buffer-local variable VAR. Each per-buffer
954 variable has an index > 0 associated with it, except when it always 963 variable has an index > 0 associated with it, except when it always
@@ -1013,11 +1022,5 @@ extern int last_per_buffer_idx;
1013#define PER_BUFFER_VALUE(BUFFER, OFFSET) \ 1022#define PER_BUFFER_VALUE(BUFFER, OFFSET) \
1014 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER))) 1023 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER)))
1015 1024
1016/* Return the symbol of the per-buffer variable at offset OFFSET in
1017 the buffer structure. */
1018
1019#define PER_BUFFER_SYMBOL(OFFSET) \
1020 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_symbols))
1021
1022/* arch-tag: 679305dd-d41c-4a50-b170-3caf5c97b2d1 1025/* arch-tag: 679305dd-d41c-4a50-b170-3caf5c97b2d1
1023 (do not change this comment) */ 1026 (do not change this comment) */